#pragma once


class Device3D;
/**
* Abstraction for the VertexBuffer concept.
* @author Koen Samyn
*/
class VertexBuffer
{
public:
	/**
	* Creates a new VertexBuffer object.
	*/
	VertexBuffer(void);
	/**
	* Destroys the VertexBuffer object.
	*/
	virtual ~VertexBuffer(void);
	/**
	* Sends the VertexBuffer to the graphics card.
	* @param device the device to use for drawing.
	*/
	virtual void Draw(Device3D* device)=0;
private:
	// -------------------------
	// Disabling default copy constructor and default assignment operator.
	// If you get a linker error from one of these functions, your class is internally trying to use them. This is
	// an error in your class, these declarations are deliberately made without implementation because they should never be used.
	// -------------------------
	VertexBuffer(const VertexBuffer& t);
	VertexBuffer& operator=(const VertexBuffer& t);
};
